Skip to content

feat(CR-014): add release notes page - #119

Draft
github-actions[bot] wants to merge 3 commits into
mainfrom
feat/CR-014
Draft

feat(CR-014): add release notes page#119
github-actions[bot] wants to merge 3 commits into
mainfrom
feat/CR-014

Conversation

@github-actions

@github-actions github-actions Bot commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds a dedicated /release-notes route (ReleaseNotes.tsx) rendering a static list of releases in reverse-chronological order, matching the About page light-mode layout
  • Adds a document icon link in the LeftSidebar system footer row so users can navigate to the page from within the app
  • Includes static release data for v0.1.1 (current) and v0.1.0

CR

CR-014 — Add a release note page for the software

DHF items updated

  • DHF/items/09_cr/CR-014.yaml — implementation notes already committed in design phase; SRS-031 and SYS-016 pre-exist on this branch
  • No new DHF items required

Validation run

  • pnpm --filter @contourlab/client typecheck — ✓ zero errors
  • pnpm --filter @contourlab/client lint — ✓ 0 errors (1 pre-existing unrelated warning in StructurePanel.tsx)
  • pnpm --filter @contourlab/client test — ✓ 304/304 tests pass (2 new ReleaseNotes tests covering SRS-031 T1 and T2)

Manual testing still required

  • Open dev server, click the document icon in the left sidebar system footer, confirm /release-notes loads with at least one release entry showing version and change bullets

Residual risks

None — static data only, no backend or clinical workflow changes

@github-actions github-actions Bot added the cr:stage/design CR stage: awaiting design review label Jun 5, 2026
Created: CR-014
Updated: SYSARCH-001
Outcome: ok
@github-actions github-actions Bot added the cr-design-approved CR design generation complete label Jun 5, 2026
@github-actions

github-actions Bot commented Jun 5, 2026

Copy link
Copy Markdown
Contributor Author

Design output for CR-014

DHF cascade generation completed successfully.

Created: CR-014

Updated: SYSARCH-001

@github-actions

github-actions Bot commented Jun 5, 2026

Copy link
Copy Markdown
Contributor Author

Implementation Plan

Overview

CR-014 adds a dedicated Release Notes page to ContourLab, accessible from within the application. The page lists software releases in reverse-chronological order, with each entry showing a version number, release date, and change bullet points. Release data is statically embedded in the component source — no network call or backend change is needed. The feature follows the existing application-page pattern (About, Issues, Settings) used throughout the frontend.

Current State

The application has four routes defined in apps/client/src/App.tsx:

  • /workspace → MainWorkspace
  • /settings → Settings
  • /issues → Issues
  • /about → About

Navigation links for Issues and Settings are in the System footer row of apps/client/src/components/layout/LeftSidebar.tsx (the bottom strip with text-[11px] uppercase tracking-widest System label and two icon-button Links).

The About.tsx page at apps/client/src/pages/About.tsx follows a light-mode card layout (bg-gray-50 page, bg-white cards, border-gray-200 borders) that the new page should match.

The app has no existing release notes data source — data must be authored at implementation time.

Changes Required

  • apps/client/src/pages/ReleaseNotes.tsx — new file: the page component plus the static release data constant. Follows the About.tsx layout convention (light-mode, max-w-5xl centered layout).
  • apps/client/src/App.tsx — modify existing: add import ReleaseNotes from ./pages/ReleaseNotes and <Route path="/release-notes" element={<ReleaseNotes />} /> before the catch-all redirect.
  • apps/client/src/components/layout/LeftSidebar.tsx — modify existing: add a Link to /release-notes in the System footer row icon group, alongside the Issues and Settings links.
  • apps/client/src/pages/ReleaseNotes.test.tsx — new file: Vitest component tests covering SRS-031 T1 and T2 test points.

Implementation Steps

  1. Author the ReleaseEntry interface and RELEASE_NOTES constant in ReleaseNotes.tsx. Include at least the current version entry sourced from package.json (already imported in About.tsx as import { version } from ../../package.json).
  2. Implement the ReleaseNotes component: header matching About.tsx style, one card per entry with version + date header and a bulleted change list.
  3. Register the route in App.tsx: import the component and add the route before the <Route path="*"> catch-all.
  4. Add the navigation link in LeftSidebar.tsx: add a <Link to="/release-notes" reloadDocument ...> icon button in the System footer row. Use a changelog-style SVG icon (e.g., list or document icon at 13×13px, same style as the Issues icon).
  5. Write tests in ReleaseNotes.test.tsx covering T1 (page renders at least one entry with version and change text) and T2 (first rendered entry is the most recent — assert RELEASE_NOTES[0].version appears first in the DOM).
  6. Run pnpm --filter @contourlab/client typecheck — expect zero errors.
  7. Run pnpm --filter @contourlab/client test — all tests must pass.
  8. Manual check: open the app, click the release notes icon in the sidebar System footer, confirm the page loads and shows version entries.

Edge Cases & Constraints

  • RELEASE_NOTES must have at least one entry or the page renders an empty state — guard or ensure the constant is non-empty.
  • The /release-notes route must appear before the <Route path="*"> catch-all in App.tsx or it will never match.
  • Styling must follow the light-mode page pattern (bg-gray-50, bg-white cards) from About.tsx — not the dark clinical workspace theme. The page is outside the workspace viewport.
  • No rounded-xl or larger. No inline styles. No any TypeScript.
  • The reloadDocument prop on the Link in LeftSidebar is used by existing navigation links (Issues, Settings) to do a full navigation away from the Cornerstone3D viewport; use it here too.
  • SRS-031 requirement says data is a static constant — do not fetch from GitHub Releases API or read a file at runtime.

Tests

  • Unit / component tests (ReleaseNotes.test.tsx):
    • @links:SRS-031 annotation on the describe block
    • T1: render the component with the default static data; assert at least one version string and one change item appear in the DOM. @testing:T1
    • T2: assert that RELEASE_NOTES[0].version appears before RELEASE_NOTES[1].version in the rendered output (if there are ≥2 entries). @testing:T2
  • Typecheck: pnpm --filter @contourlab/client typecheck — zero errors
  • Manual confirmation: navigate to /release-notes in a running dev server; verify the page renders correctly with at least one release entry.

Adds a dedicated /release-notes route with a static release entry list
rendered in reverse-chronological order, a document icon link in the
LeftSidebar system footer, and two Vitest component tests covering
SRS-031 T1 and T2.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions github-actions Bot changed the title feat(CR-014): Add a release note page for the software feat(CR-014): add release notes page Jun 5, 2026
@github-actions

github-actions Bot commented Jun 5, 2026

Copy link
Copy Markdown
Contributor Author

No description provided.

@itercharles itercharles left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fix the the coverage check failures

@github-actions

github-actions Bot commented Jun 5, 2026

Copy link
Copy Markdown
Contributor Author

No description provided.

@github-actions

github-actions Bot commented Jun 5, 2026

Copy link
Copy Markdown
Contributor Author

⚠️ Warnings for CR-014:

  • claude_step_failed: Step run_initial_generation exited with code 1.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cr:stage/design CR stage: awaiting design review cr-design-approved CR design generation complete

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant